import request from '../../until/request.js'
import PubSub from 'pubsub-js'
Page({
  // 封装发送每日推荐歌单列表请求的函数
  async getRecommendDay(){
    const res = await request({
      url:'/recommend/songs',
      method:'get'
    })
    // console.log(res);
    if(res.code===200){
      this.setData({
        recommendSongList:res.data.dailySongs.map(item=>{
          return{
            id:item.id,
            name:item.name,
            picUrl:item.album.picUrl,
            artist:item.album.artists[0].name
          }
        })
      })
    }
  },
  // 点击跳转音乐详情页
  toSongDetaillPage(e){
    // console.log(e);
    // 存储当前点击的那首歌的id，后面上一首下一首会用到
    const nowSongId = e.currentTarget.id
    this.setData({
      nowSongId
    })
    // 跳转到详情页，传递当前的id，详情页需要根据id获取歌曲信息和音频
    // 在小程序中，url传参只能使用query参数，不能使用params参数，因为没有路由
    wx.navigateTo({
      url: '/pages/songDetail/songDetail?songId='+this.data.nowSongId,
    })
  },
  /**
   * 页面的初始数据
   */
  data: {
    mounth:new Date().getMonth()+1,
    day:new Date().getDate(),
    recommendSongList:[],//每日推荐歌单
    nowSongId:'',//现在播放的歌曲id
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 发送请求请求每日推荐歌曲列表
    this.getRecommendDay()

    // 订阅音乐详情页的播放上一首下一首
    PubSub.subscribe('type',(_,type)=>{
      // 找到当前播放的音乐在整个列表中的索引，然后播放上一个索引的歌曲
      const index = this.data.recommendSongList.findIndex(item=>item.id === this.data.nowSongId*1)
      // 由于data中存储的nowSongId为字符串，recommendSongList里面的id是数字，所以需要类型转换一下
      let newIndex
      if(type === 'prev'){//播放上一首
        newIndex = index === 0 ? this.data.recommendSongList.length - 1 : index - 1
      }else{//播放下一首
        newIndex = index === this.data.recommendSongList.length - 1 ? 0 : index + 1
      }
      // 更新当前播放的歌曲的id
      this.setData({
        nowSongId:this.data.recommendSongList[newIndex].id
      })
      // 将当前播放的歌曲id传给songDetail
      PubSub.publish('songId',this.data.nowSongId)
      
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})